package com.yangfan.design_pattern.observer;

import java.util.ArrayList;
import java.util.List;

/**
 * @description: 模拟单位发布公告,
 * @author: yangfan
 * @date: Created in 2020/2/10 0010 16:24
 * @modified By:
 */
public class Subject {

    //公告内容
    private String content;


    //这个公告都有哪些人订阅了
    private final List<ObServer> observers = new ArrayList<ObServer>();


    //添加对公告的订阅
    protected void addObServer(ObServer obServer){
        observers.add(obServer);
    }


    //更新公告内容
    public void update(String content){

        this.content = content;

        //通知所有订阅者
        notifyAllObServer();

    }


    //通知所有的 观察者 (订阅者) 发布了公告
    private void notifyAllObServer(){

        observers.stream().forEach( x -> x.notification(content));

    }





}
